<?php

/*
 * Copyright 2008 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#namespace tehframework\objects\propertyeditors;

#use tehframework\objects\PropertyEditor;

class ArrayEditor extends PropertyEditor
{
	/**
	 * Edits the given property so that it meets this editor's format.
	 * 
	 * Result depends on a type of the given {@link $propertyValue value}:
	 * - string:
	 *   always empty array.
	 * - object:
	 *   an array created by iterating through the object.
	 * - array:
	 *   the specified value
	 * - null:
	 *   always empty array.
	 * - boolean:
	 *   always empty array.
	 * - resource:
	 *   always empty array.
	 * - integer:
	 *   always empty array.
	 * - float:
	 *   always empty array.
	 * 
	 * @param  mixed $propertyValue
	 *         A value to be edited.
	 * @return string
	 *         A {@link $propertyValue value} converted to array.
	 */
	public function editProperty($propertyValue)
	{
		switch (gettype($propertyValue))
		{
			case 'object':
			{
				$array = array();
				
				foreach ($propertyValue as $k => $v)
				{
					$array[$k] = $v;
				}
				
				return $array;
			}
			
			case 'array':
				return $propertyValue;
			
			default:
				return array();
		}
	}
}